package com.mengxinya.ys.spider.zhihu;

import org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
import java.util.stream.IntStream;

public class Encrypt {
    private static final int[] zk = {
            1170614578, 1024848638, 1413669199, -343334464, -766094290, -1373058082, -143119608, -297228157, 1933479194, -971186181, -406453910, 460404854, -547427574, -1891326262, -1679095901, 2119585428, -2029270069, 2035090028,
            -1521520070, -5587175, -77751101, -2094365853, -1243052806, 1579901135, 1321810770, 456816404, -1391643889, -229302305, 330002838, -788960546, 363569021, -1947871109
    };
    private static final int[] zb = {
            20, 223, 245, 7, 248, 2, 194, 209, 87, 6, 227, 253, 240, 128, 222, 91, 237, 9, 125, 157, 230, 93, 252, 205, 90, 79, 144, 199, 159, 197, 186, 167, 39, 37, 156, 198, 38, 42, 43, 168, 217, 153, 15, 103, 80, 189, 71, 191, 97, 84,
            247, 95, 36, 69, 14, 35, 12, 171, 28, 114, 178, 148, 86, 182, 32, 83, 158, 109, 22, 255, 94, 238, 151, 85, 77, 124, 254, 18, 4, 26, 123, 176, 232, 193, 131, 172, 143, 142, 150, 30, 10, 146, 162, 62, 224, 218, 196, 229, 1,
            192, 213, 27, 110, 56, 231, 180, 138, 107, 242, 187, 54, 120, 19, 44, 117, 228, 215, 203, 53, 239, 251, 127, 81, 11, 133, 96, 204, 132, 41, 115, 73, 55, 249, 147, 102, 48, 122, 145, 106, 118, 74, 190, 29, 16, 174, 5, 177,
            129, 63, 113, 99, 31, 161, 76, 246, 34, 211, 13, 60, 68, 207, 160, 65, 111, 82, 165, 67, 169, 225, 57, 112, 244, 155, 51, 236, 200, 233, 58, 61, 47, 100, 137, 185, 64, 17, 70, 234, 163, 219, 108, 170, 166, 59, 149, 52, 105,
            24, 212, 78, 173, 45, 0, 116, 226, 119, 136, 206, 135, 175, 195, 25, 92, 121, 208, 126, 139, 3, 75, 141, 21, 130, 98, 241, 40, 154, 66, 184, 49, 181, 46, 243, 88, 101, 183, 8, 23, 72, 188, 104, 179, 210, 134, 250, 201, 164,
            89, 216, 202, 220, 50, 221, 152, 140, 33, 235, 214
    };

    private static final String salt = "6fpLRqJO8M/c3jnYxFkUVC4ZIG12SiH=5v0mXDazWBTsuw7QetbKdoPyAl+hN9rgE";

    private static void i(int e, int[] t, int n) {
        t[n] = 255 & (e >>> 24);
        t[n + 1] = 255 & (e >>> 16);
        t[n + 2] = 255 & (e >>> 8);
        t[n + 3] = 255 & e;
    }

    private static int B(int[] e, int t) {
        return ((255 & e[t]) << 24) | ((255 & e[t + 1]) << 16) | ((255 & e[t + 2]) << 8) | (255 & e[t + 3]);
    }

    private static int Q(int e, int t) {
        return ((int) (4294967295L & e) << t) | (e >>> (32 - t));
    }

    private static int G(int e) {
        int[] t = new int[4];
        int[] n = new int[4];
        i(e, t, 0);
        n[0] = zb[255 & t[0]];
        n[1] = zb[255 & t[1]];
        n[2] = zb[255 & t[2]];
        n[3] = zb[255 & t[3]];
        int r = B(n, 0);
        return r ^ Q(r, 2) ^ Q(r, 10) ^ Q(r, 18) ^ Q(r, 24);
    }

    private static int[] __g_r(int[] e) {
        int[] t = new int[16];
        int[] n = new int[36];
        n[0] = B(e, 0);
        n[1] = B(e, 4);
        n[2] = B(e, 8);
        n[3] = B(e, 12);
        for (int r = 0; r < 32; r++) {
            int o = G(n[r + 1] ^ n[r + 2] ^ n[r + 3] ^ zk[r]);
            n[r + 4] = n[r] ^ o;
        }
        i(n[35], t, 0);
        i(n[34], t, 4);
        i(n[33], t, 8);
        i(n[32], t, 12);
        return t;
    }

    private static int[] __g_x(int[] e, int[] t) {
        List<Integer> n = new ArrayList<>();
        for (int r = e.length, i = 0; 0 < r; r -= 16) {
            int[] a = new int[16];
            int[] o = Arrays.copyOfRange(e, 16 * i, 16 * (i + 1));
            for (int c = 0; c < 16; c++) {
                a[c] = o[c] ^ t[c];
            }
            t = __g_r(a);
            for (int item : t) {
                n.add(item);
            }
            i++;
        }
        return n.stream().mapToInt(Integer::intValue).toArray();
    }

    private static String encode(int param) {
        StringBuilder result = new StringBuilder();
        for (int x : new int[]{0, 6, 12, 18}) {
            int a = param >>> x;
            int b = a & 63;
            char c = salt.charAt(b);
            result.append(c);
        }
        return result.toString();
    }

    private static int[] preProcess(String md5Str) {
        List<Integer> md5CharCodeAtArr = new ArrayList<>();
        for (int i = 0; i < md5Str.length(); i++) {
            md5CharCodeAtArr.add((int) md5Str.charAt(i));
        }

        md5CharCodeAtArr.add(0, (int) (Math.random() * 127));
        md5CharCodeAtArr.add(0, 0);
        for (int i = 0; i < 15; i++) {
            md5CharCodeAtArr.add(14);
        }

        int[] md5CharCodeAtFrontArr = md5CharCodeAtArr.stream().limit(16).mapToInt(Integer::intValue).toArray();
        int[] fixArr = {48, 53, 57, 48, 53, 51, 102, 55, 100, 49, 53, 101, 48, 49, 100, 55};
        int[] new_md5_charCodeAt_arr = new int[md5CharCodeAtFrontArr.length];
        for (int i = 0; i < md5CharCodeAtFrontArr.length; i++) {
            new_md5_charCodeAt_arr[i] = md5CharCodeAtFrontArr[i] ^ fixArr[i] ^ 42;
        }

        int[] __g_r = __g_r(new_md5_charCodeAt_arr);
        int[] md5CharCodeAtBackArr = md5CharCodeAtArr.stream().skip(16).limit(32).mapToInt(Integer::intValue).toArray();
        int[] __g_x = __g_x(md5CharCodeAtBackArr, __g_r);
        return IntStream.concat(Arrays.stream(__g_r), Arrays.stream(__g_x)).toArray();
    }

    public static String encrypt(String md5Str) {
        int[] processed = preProcess(md5Str);

        int current = 0;
        StringBuilder resultStr = new StringBuilder();
        for (int i = 0; i < processed.length; i++) {
            int pop = processed[processed.length - i - 1];
            int i_mod_4 = i % 4;
            int i_mod_3 = i % 3;

            int a = 8 * i_mod_4;
            int b = 58 >>> a;
            int c = b & 255;
            int d = pop ^ c;
            int e = d << (8 * i_mod_3);

            current |= e;

            if (i_mod_3 == 2) {
                resultStr.append(encode(current));
                current = 0;
            }
        }
        return resultStr.toString();
    }

    public static void main(String[] args) throws ScriptException {
//        String md5Str = "101_3_3.0+/api/v3/moments?offset=1679615166240&moment_start_offset=1680429066219&limit=10&page_num=2+AIBTrkbunBaPTjZRU70DzpQxZGYF6tJLp5E=|1681268567+3_2.0VhnTj77m-qofgh3TxTnq2_Qq2LYuDhV80wSL7iUZQ6nxETY0m4fBJCHMiqHPD4S1hCS974e1DrNPAQLYlUefii7q26fp2L2ZKgSfnveCgrNOQwXTt_Fq6DQye8t9DGwT9RFZQAuTLbHP2GomybO1VhRTQ6kp-XxmxgNK-GNTjTkxkhkKh0PhHix_F0nX6MwCiBX01bHf8hx_qhoCM_O_2hL_HqxLiBOY8qg1bTxmQvLsnwOL14eBFH_zQMS1eugBGHN0Pv98fu3pUDVm8DSY6JefSDp12HXYGHxOZbeG2CwmgJeMGgx9kASVBUx9XqtyGiNY3DoMoqgmEqXf8_NqiCxKbcnpzvC9NhwqwUxBorOs";
//
//        String encryptedStr = encrypt(md5(md5Str));
//        System.out.println("Encrypted String: " + encryptedStr);

        testJs();
    }

    public static String md5(String input) {
        MessageDigest md = null;
        try {
            md = MessageDigest.getInstance("MD5");
            byte[] inputBytes = input.getBytes();
            byte[] hashBytes = md.digest(inputBytes);
            StringBuilder sb = new StringBuilder();
            for (byte b : hashBytes) {
                sb.append(String.format("%02x", b));
            }
            return sb.toString();
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException(e);
        }
    }

    private static void testJs() throws ScriptException {
        String code = """
                function aa() {
                        "use strict";
                        var __webpack_unused_export__;
                        function o(t) {
                            return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.A ? function(t) {
                                return typeof t
                            }
                            : function(t) {
                                return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t
                            }
                            )(t)
                        }
                        function x(e) {
                            return C(e) || s(e) || t()
                        }
                        function C(t) {
                            if (Array.isArray(t)) {
                                for (var e = 0, n = new Array(t.length); e < t.length; e++)
                                    n[e] = t[e];
                                return n
                            }
                        }
                        function s(t) {
                            if (Symbol.A in Object(t) || "[object Arguments]" === Object.prototype.toString.call(t))
                                return Array.from(t)
                        }
                        function t() {
                            throw new TypeError("Invalid attempt to spread non-iterable instance")
                        }
                        __webpack_unused_export__ = {
                            value: !0
                        };
                        var A = "3.0", S = "undefined" != typeof window ? window : {}, h;
                        function i(t, e, n) {
                            e[n] = 255 & t >>> 24,
                            e[n + 1] = 255 & t >>> 16,
                            e[n + 2] = 255 & t >>> 8,
                            e[n + 3] = 255 & t
                        }
                        function B(t, e) {
                            return (255 & t[e]) << 24 | (255 & t[e + 1]) << 16 | (255 & t[e + 2]) << 8 | 255 & t[e + 3]
                        }
                        function Q(t, e) {
                            return (4294967295 & t) << e | t >>> 32 - e
                        }
                        function G(t) {
                            var e = new Array(4)
                              , n = new Array(4);
                            i(t, e, 0),
                            n[0] = h.zb[255 & e[0]],
                            n[1] = h.zb[255 & e[1]],
                            n[2] = h.zb[255 & e[2]],
                            n[3] = h.zb[255 & e[3]];
                            var r = B(n, 0);
                            return r ^ Q(r, 2) ^ Q(r, 10) ^ Q(r, 18) ^ Q(r, 24)
                        }
                        var __g = {
                            x: function(t, e) {
                                for (var n = [], r = t.length, o = 0; 0 < r; r -= 16) {
                                    for (var i = t.slice(16 * o, 16 * (o + 1)), a = new Array(16), u = 0; u < 16; u++)
                                        a[u] = i[u] ^ e[u];
                                    e = __g.r(a),
                                    n = n.concat(e),
                                    o++
                                }
                                return n
                            },
                            r: function(t) {
                                var e = new Array(16)
                                  , n = new Array(36);
                                n[0] = B(t, 0),
                                n[1] = B(t, 4),
                                n[2] = B(t, 8),
                                n[3] = B(t, 12);
                                for (var r = 0; r < 32; r++) {
                                    var o = G(n[r + 1] ^ n[r + 2] ^ n[r + 3] ^ h.zk[r]);
                                    n[r + 4] = n[r] ^ o
                                }
                                return i(n[35], e, 0),
                                i(n[34], e, 4),
                                i(n[33], e, 8),
                                i(n[32], e, 12),
                                e
                            }
                        };
                        function l() {
                            this.C = [0, 0, 0, 0],
                            this.s = +[],
                            this.t = [],
                            this.S = [],
                            this.h = [],
                            this.i = [],
                            this.B = [],
                            this.Q = !1,
                            this.G = [],
                            this.D = [],
                            this.w = 1024,
                            this.g = null,
                            this.a = Date.now(),
                            this.e = +[],
                            this.T = 255,
                            this.V = null,
                            this.U = Date.now,
                            this.M = new Array(32)
                        }
                        l.prototype.O = function(A, C, s) {
                            for (var t, S, h, i, B, Q, G, D, w, g, a, e, E, T, r, V, U, M, O, c, I; this.T < this.w; )
                                try {
                                    switch (this.T) {
                                    case 27:
                                        this.C[this.c] = this.C[this.I] >> this.C[this.F],
                                        this.M[12] = 35,
                                        this.T = this.T * (this.C.length + (this.M[13] ? 3 : 9)) + 1;
                                        break;
                                    case 34:
                                        this.C[this.c] = this.C[this.I] & this.C[this.F],
                                        this.T = this.T * (this.M[15] - 6) + 12;
                                        break;
                                    case 41:
                                        this.C[this.c] = this.C[this.I] <= this.C[this.F],
                                        this.T = 8 * this.T + 27;
                                        break;
                                    case 48:
                                        this.C[this.c] = !this.C[this.I],
                                        this.T = 7 * this.T + 16;
                                        break;
                                    case 50:
                                        this.C[this.c] = this.C[this.I] | this.C[this.F],
                                        this.T = 6 * this.T + 52;
                                        break;
                                    case 57:
                                        this.C[this.c] = this.C[this.I] >>> this.C[this.F],
                                        this.T = 7 * this.T - 47;
                                        break;
                                    case 64:
                                        this.C[this.c] = this.C[this.I] << this.C[this.F],
                                        this.T = 5 * this.T + 32;
                                        break;
                                    case 71:
                                        this.C[this.c] = this.C[this.I] ^ this.C[this.F],
                                        this.T = 6 * this.T - 74;
                                        break;
                                    case 78:
                                        this.C[this.c] = this.C[this.I] & this.C[this.F],
                                        this.T = 4 * this.T + 40;
                                        break;
                                    case 80:
                                        this.C[this.c] = this.C[this.I] < this.C[this.F],
                                        this.T = 5 * this.T - 48;
                                        break;
                                    case 87:
                                        this.C[this.c] = -this.C[this.I],
                                        this.T = 3 * this.T + 91;
                                        break;
                                    case 94:
                                        this.C[this.c] = this.C[this.I] > this.C[this.F],
                                        this.T = 4 * this.T - 24;
                                        break;
                                    case 101:
                                        this.C[this.c] = this.C[this.I]in this.C[this.F],
                                        this.T = 3 * this.T + 49;
                                        break;
                                    case 108:
                                        this.C[this.c] = o(this.C[this.I]),
                                        this.T = 2 * this.T + 136;
                                        break;
                                    case 110:
                                        this.C[this.c] = this.C[this.I] !== this.C[this.F],
                                        this.T += 242;
                                        break;
                                    case 117:
                                        this.C[this.c] = this.C[this.I] && this.C[this.F],
                                        this.T = 3 * this.T + 1;
                                        break;
                                    case 124:
                                        this.C[this.c] = this.C[this.I] || this.C[this.F],
                                        this.T += 228;
                                        break;
                                    case 131:
                                        this.C[this.c] = this.C[this.I] >= this.C[this.F],
                                        this.T = 3 * this.T - 41;
                                        break;
                                    case 138:
                                        this.C[this.c] = this.C[this.I] == this.C[this.F],
                                        this.T = 2 * this.T + 76;
                                        break;
                                    case 140:
                                        this.C[this.c] = this.C[this.I] % this.C[this.F],
                                        this.T += 212;
                                        break;
                                    case 147:
                                        this.C[this.c] = this.C[this.I] / this.C[this.F],
                                        this.T += 205;
                                        break;
                                    case 154:
                                        this.C[this.c] = this.C[this.I] * this.C[this.F],
                                        this.T += 198;
                                        break;
                                    case 161:
                                        this.C[this.c] = this.C[this.I] - this.C[this.F],
                                        this.T += 191;
                                        break;
                                    case 168:
                                        this.C[this.c] = this.C[this.I] + this.C[this.F],
                                        this.T = 2 * this.T + 16;
                                        break;
                                    case 254:
                                        this.C[this.c] = eval(i),
                                        this.T += 20 < this.M[11] ? 98 : 89;
                                        break;
                                    case 255:
                                        this.s = C || 0,
                                        this.M[26] = 52,
                                        this.T += this.M[13] ? 8 : 6;
                                        break;
                                    case 258:
                                        g = {};
                                        for (var F = 0; F < this.k; F++)
                                            e = this.i.pop(),
                                            a = this.i.pop(),
                                            g[a] = e;
                                        this.C[this.W] = g,
                                        this.T += 94;
                                        break;
                                    case 261:
                                        this.D = s || [],
                                        this.M[11] = 68,
                                        this.T += this.M[26] ? 3 : 5;
                                        break;
                                    case 264:
                                        this.M[15] = 16,
                                        this.T = "string" == typeof A ? 331 : 336;
                                        break;
                                    case 266:
                                        this.C[this.I][i] = this.i.pop(),
                                        this.T += 86;
                                        break;
                                    case 278:
                                        this.C[this.c] = this.C[this.I][i],
                                        this.T += this.M[22] ? 63 : 74;
                                        break;
                                    case 283:
                                        this.C[this.c] = eval(String.fromCharCode(this.C[this.I]));
                                        break;
                                    case 300:
                                        S = this.U(),
                                        this.M[0] = 66,
                                        this.T += this.M[11];
                                        break;
                                    case 331:
                                        D = atob(A),
                                        w = D.charCodeAt(0) << 16 | D.charCodeAt(1) << 8 | D.charCodeAt(2);
                                        for (var k = 3; k < w + 3; k += 3)
                                            this.G.push(D.charCodeAt(k) << 16 | D.charCodeAt(k + 1) << 8 | D.charCodeAt(k + 2));
                                        for (V = w + 3; V < D.length; )
                                            E = D.charCodeAt(V) << 8 | D.charCodeAt(V + 1),
                                            T = D.slice(V + 2, V + 2 + E),
                                            this.D.push(T),
                                            V += E + 2;
                                        this.M[21] = 8,
                                        this.T += 1e3 < V ? 21 : 35;
                                        break;
                                    case 336:
                                        this.G = A,
                                        this.D = s,
                                        this.M[18] = 134,
                                        this.T += this.M[15];
                                        break;
                                    case 344:
                                        this.T = 3 * this.T - 8;
                                        break;
                                    case 350:
                                        U = 66,
                                        M = [],
                                        I = this.D[this.k];
                                        for (var W = 0; W < I.length; W++)
                                            M.push(String.fromCharCode(24 ^ I.charCodeAt(W) ^ U)),
                                            U = 24 ^ I.charCodeAt(W) ^ U;
                                        r = parseInt(M.join("").split("|")[1]),
                                        this.C[this.W] = this.i.slice(this.i.length - r),
                                        this.i = this.i.slice(0, this.i.length - r),
                                        this.T += 2;
                                        break;
                                    case 352:
                                        this.e = this.G[this.s++],
                                        this.T -= this.M[26];
                                        break;
                                    case 360:
                                        this.a = S,
                                        this.T += this.M[0];
                                        break;
                                    case 368:
                                        this.T -= 500 < S - this.a ? 24 : 8;
                                        break;
                                    case 380:
                                        this.i.push(16383 & this.e),
                                        this.T -= 28;
                                        break;
                                    case 400:
                                        this.i.push(this.S[16383 & this.e]),
                                        this.T -= 48;
                                        break;
                                    case 408:
                                        this.T -= 64;
                                        break;
                                    case 413:
                                        this.C[this.e >> 15 & 7] = (this.e >> 18 & 1) == +[] ? 32767 & this.e : this.S[32767 & this.e],
                                        this.T -= 61;
                                        break;
                                    case 418:
                                        this.S[65535 & this.e] = this.C[this.e >> 16 & 7],
                                        this.T -= this.e >> 16 < 20 ? 66 : 80;
                                        break;
                                    case 423:
                                        this.c = this.e >> 16 & 7,
                                        this.I = this.e >> 13 & 7,
                                        this.F = this.e >> 10 & 7,
                                        this.J = 1023 & this.e,
                                        this.T -= 255 + 6 * this.J + this.J % 5;
                                        break;
                                    case 426:
                                        this.T += 5 * (this.e >> 19) - 18;
                                        break;
                                    case 428:
                                        this.W = this.e >> 16 & 7,
                                        this.k = 65535 & this.e,
                                        this.t.push(this.s),
                                        this.h.push(this.S),
                                        this.s = this.C[this.W],
                                        this.S = [];
                                        for (var J = 0; J < this.k; J++)
                                            this.S.unshift(this.i.pop());
                                        this.B.push(this.i),
                                        this.i = [],
                                        this.T -= 76;
                                        break;
                                    case 433:
                                        this.s = this.t.pop(),
                                        this.S = this.h.pop(),
                                        this.i = this.B.pop(),
                                        this.T -= 81;
                                        break;
                                    case 438:
                                        this.Q = this.C[this.e >> 16 & 7],
                                        this.T -= 86;
                                        break;
                                    case 440:
                                        U = 66,
                                        M = [],
                                        I = this.D[16383 & this.e];
                                        for (var b = 0; b < I.length; b++)
                                            M.push(String.fromCharCode(24 ^ I.charCodeAt(b) ^ U)),
                                            U = 24 ^ I.charCodeAt(b) ^ U;
                                        M = M.join("").split("|"),
                                        O = parseInt(M.shift()),
                                        this.i.push(O === +[] ? M.join("|") : O === +!+[] ? -1 !== M.join().indexOf(".") ? parseInt(M.join()) : parseFloat(M.join()) : O === !+[] + !+[] ? eval(M.join()) : 3 === O ? null : void 0),
                                        this.T -= 88;
                                        break;
                                    case 443:
                                        this.b = this.e >> 2 & 65535,
                                        this.J = 3 & this.e,
                                        this.J === +[] ? this.s = this.b : this.J === +!+[] ? !!this.Q && (this.s = this.b) : 2 === this.J ? !this.Q && (this.s = this.b) : this.s = this.b,
                                        this.g = null,
                                        this.T -= 91;
                                        break;
                                    case 445:
                                        this.i.push(this.C[this.e >> 14 & 7]),
                                        this.T -= 93;
                                        break;
                                    case 448:
                                        this.W = this.e >> 16 & 7,
                                        this.k = this.e >> 2 & 4095,
                                        this.J = 3 & this.e,
                                        Q = this.J === +!+[] && this.i.pop(),
                                        G = this.i.slice(this.i.length - this.k, this.i.length),
                                        this.i = this.i.slice(0, this.i.length - this.k),
                                        c = 2 < G.length ? 3 : G.length,
                                        this.T += 6 * this.J + 1 + 10 * c;
                                        break;
                                    case 449:
                                        this.C[3] = this.C[this.W](),
                                        this.T -= 97 - G.length;
                                        break;
                                    case 455:
                                        this.C[3] = this.C[this.W][Q](),
                                        this.T -= 103 + G.length;
                                        break;
                                    case 453:
                                        B = this.e >> 17 & 3,
                                        this.T = B === +[] ? 445 : B === +!+[] ? 380 : B === !+[] + !+[] ? 400 : 440;
                                        break;
                                    case 458:
                                        this.J = this.e >> 17 & 3,
                                        this.c = this.e >> 14 & 7,
                                        this.I = this.e >> 11 & 7,
                                        i = this.i.pop(),
                                        this.T -= 12 * this.J + 180;
                                        break;
                                    case 459:
                                        this.C[3] = this.C[this.W](G[+[]]),
                                        this.T -= 100 + 7 * G.length;
                                        break;
                                    case 461:
                                        this.C[3] = new this.C[this.W],
                                        this.T -= 109 - G.length;
                                        break;
                                    case 463:
                                        U = 66,
                                        M = [],
                                        I = this.D[65535 & this.e];
                                        for (var n = 0; n < I.length; n++)
                                            M.push(String.fromCharCode(24 ^ I.charCodeAt(n) ^ U)),
                                            U = 24 ^ I.charCodeAt(n) ^ U;
                                        M = M.join("").split("|"),
                                        O = parseInt(M.shift()),
                                        this.T += 10 * O + 3;
                                        break;
                                    case 465:
                                        this.C[3] = this.C[this.W][Q](G[+[]]),
                                        this.T -= 13 * G.length + 100;
                                        break;
                                    case 466:
                                        this.C[this.e >> 16 & 7] = M.join("|"),
                                        this.T -= 114 * M.length;
                                        break;
                                    case 468:
                                        this.g = 65535 & this.e,
                                        this.T -= 116;
                                        break;
                                    case 469:
                                        this.C[3] = this.C[this.W](G[+[]], G[1]),
                                        this.T -= 119 - G.length;
                                        break;
                                    case 471:
                                        this.C[3] = new this.C[this.W](G[+[]]),
                                        this.T -= 118 + G.length;
                                        break;
                                    case 473:
                                        throw this.C[this.e >> 16 & 7];
                                    case 475:
                                        this.C[3] = this.C[this.W][Q](G[+[]], G[1]),
                                        this.T -= 123;
                                        break;
                                    case 476:
                                        this.C[this.e >> 16 & 7] = -1 !== M.join().indexOf(".") ? parseInt(M.join()) : parseFloat(M.join()),
                                        this.T -= this.M[21] < 10 ? 124 : 126;
                                        break;
                                    case 478:
                                        t = [0].concat(x(this.S)),
                                        this.V = 65535 & this.e,
                                        h = this,
                                        this.C[3] = function(e) {
                                            var n = new l;
                                            return n.S = t,
                                            n.S[0] = e,
                                            n.O(h.G, h.V, h.D),
                                            n.C[3]
                                        }
                                        ,
                                        this.T -= 50 < this.M[3] ? 120 : 126;
                                        break;
                                    case 479:
                                        this.C[3] = this.C[this.W].apply(null, G),
                                        this.M[3] = 168,
                                        this.T -= this.M[9] ? 127 : 128;
                                        break;
                                    case 481:
                                        this.C[3] = new this.C[this.W](G[+[]],G[1]),
                                        this.T -= 10 * G.length + 109;
                                        break;
                                    case 483:
                                        this.J = this.e >> 15 & 15,
                                        this.W = this.e >> 12 & 7,
                                        this.k = 4095 & this.e,
                                        this.T = 0 === this.J ? 258 : 350;
                                        break;
                                    case 485:
                                        this.C[3] = this.C[this.W][Q].apply(null, G),
                                        this.T -= this.M[15] % 2 == 1 ? 143 : 133;
                                        break;
                                    case 486:
                                        this.C[this.e >> 16 & 7] = eval(M.join()),
                                        this.T -= this.M[18];
                                        break;
                                    case 491:
                                        this.C[3] = new this.C[this.W].apply(null,G),
                                        this.T -= this.M[8] / this.M[1] < 10 ? 139 : 130;
                                        break;
                                    case 496:
                                        this.C[this.e >> 16 & 7] = null,
                                        this.T -= 10 < this.M[5] - this.M[3] ? 160 : 144;
                                        break;
                                    case 506:
                                        this.C[this.e >> 16 & 7] = void 0,
                                        this.T -= this.M[18] % this.M[12] == 1 ? 154 : 145;
                                        break;
                                    default:
                                        this.T = this.w
                                    }
                                } catch (A) {
                                    this.g && (this.s = this.g),
                                    this.T -= 114
                                }
                        }
                        ,
                        "undefined" != typeof window && (S.__ZH__ = S.__ZH__ || {},
                        h = S.__ZH__.zse = S.__ZH__.zse || {},
                       \s
                        (new l).O("ABt7CAAUSAAACADfSAAACAD1SAAACAAHSAAACAD4SAAACAACSAAACADCSAAACADRSAAACABXSAAACAAGSAAACADjSAAACAD9SAAACADwSAAACACASAAACADeSAAACABbSAAACADtSAAACAAJSAAACAB9SAAACACdSAAACADmSAAACABdSAAACAD8SAAACADNSAAACABaSAAACABPSAAACACQSAAACADHSAAACACfSAAACADFSAAACAC6SAAACACnSAAACAAnSAAACAAlSAAACACcSAAACADGSAAACAAmSAAACAAqSAAACAArSAAACACoSAAACADZSAAACACZSAAACAAPSAAACABnSAAACABQSAAACAC9SAAACABHSAAACAC/SAAACABhSAAACABUSAAACAD3SAAACABfSAAACAAkSAAACABFSAAACAAOSAAACAAjSAAACAAMSAAACACrSAAACAAcSAAACABySAAACACySAAACACUSAAACABWSAAACAC2SAAACAAgSAAACABTSAAACACeSAAACABtSAAACAAWSAAACAD/SAAACABeSAAACADuSAAACACXSAAACABVSAAACABNSAAACAB8SAAACAD+SAAACAASSAAACAAESAAACAAaSAAACAB7SAAACACwSAAACADoSAAACADBSAAACACDSAAACACsSAAACACPSAAACACOSAAACACWSAAACAAeSAAACAAKSAAACACSSAAACACiSAAACAA+SAAACADgSAAACADaSAAACADESAAACADlSAAACAABSAAACADASAAACADVSAAACAAbSAAACABuSAAACAA4SAAACADnSAAACAC0SAAACACKSAAACABrSAAACADySAAACAC7SAAACAA2SAAACAB4SAAACAATSAAACAAsSAAACAB1SAAACADkSAAACADXSAAACADLSAAACAA1SAAACADvSAAACAD7SAAACAB/SAAACABRSAAACAALSAAACACFSAAACABgSAAACADMSAAACACESAAACAApSAAACABzSAAACABJSAAACAA3SAAACAD5SAAACACTSAAACABmSAAACAAwSAAACAB6SAAACACRSAAACABqSAAACAB2SAAACABKSAAACAC+SAAACAAdSAAACAAQSAAACACuSAAACAAFSAAACACxSAAACACBSAAACAA/SAAACABxSAAACABjSAAACAAfSAAACAChSAAACABMSAAACAD2SAAACAAiSAAACADTSAAACAANSAAACAA8SAAACABESAAACADPSAAACACgSAAACABBSAAACABvSAAACABSSAAACAClSAAACABDSAAACACpSAAACADhSAAACAA5SAAACABwSAAACAD0SAAACACbSAAACAAzSAAACADsSAAACADISAAACADpSAAACAA6SAAACAA9SAAACAAvSAAACABkSAAACACJSAAACAC5SAAACABASAAACAARSAAACABGSAAACADqSAAACACjSAAACADbSAAACABsSAAACACqSAAACACmSAAACAA7SAAACACVSAAACAA0SAAACABpSAAACAAYSAAACADUSAAACABOSAAACACtSAAACAAtSAAACAAASAAACAB0SAAACADiSAAACAB3SAAACACISAAACADOSAAACACHSAAACACvSAAACADDSAAACAAZSAAACABcSAAACAB5SAAACADQSAAACAB+SAAACACLSAAACAADSAAACABLSAAACACNSAAACAAVSAAACACCSAAACABiSAAACADxSAAACAAoSAAACACaSAAACABCSAAACAC4SAAACAAxSAAACAC1SAAACAAuSAAACADzSAAACABYSAAACABlSAAACAC3SAAACAAISAAACAAXSAAACABISAAACAC8SAAACABoSAAACACzSAAACADSSAAACACGSAAACAD6SAAACADJSAAACACkSAAACABZSAAACADYSAAACADKSAAACADcSAAACAAySAAACADdSAAACACYSAAACACMSAAACAAhSAAACADrSAAACADWSAAAeIAAEAAACAB4SAAACAAySAAACABiSAAACABlSAAACABjSAAACABiSAAACAB3SAAACABkSAAACABnSAAACABrSAAACABjSAAACAB3SAAACABhSAAACABjSAAACABuSAAACABvSAAAeIABEAABCABkSAAACAAzSAAACABkSAAACAAySAAACABlSAAACAA3SAAACAAySAAACAA2SAAACABmSAAACAA1SAAACAAwSAAACABkSAAACAA0SAAACAAxSAAACAAwSAAACAAxSAAAeIABEAACCAAgSAAATgACVAAAQAAGEwADDAADSAAADAACSAAADAAASAAACANcIAADDAADSAAASAAATgADVAAATgAEUAAATgAFUAAATgAGUgAADAAASAAASAAATgADVAAATgAEUAAATgAFUAAATgAHUgAADAABSAAASAAATgADVAAATgAEUAAATgAFUAAATgAIUgAAcAgUSMAATgAJVAAATgAKUgAAAAAADAABSAAADAAAUAAACID/GwQPCAAYG2AREwAGDAABCIABGwQASMAADAAAUAAACID/GwQPCAAQG2AREwAHDAABCIACGwQASMAADAAAUAAACID/GwQPCAAIG2AREwAIDAABCIADGwQASMAADAAAUAAACID/GwQPEwAJDYAGDAAHG2ATDAAIG2ATDAAJG2ATKAAACAD/DIAACQAYGygSGwwPSMAASMAADAACSAAADAABUgAACAD/DIAACQAQGygSGwwPSMAASMAADAACCIABGwQASMAADAABUgAACAD/DIAACQAIGygSGwwPSMAASMAADAACCIACGwQASMAADAABUgAACAD/DIAAGwQPSMAASMAADAACCIADGwQASMAADAABUgAAKAAACAAgDIABGwQBEwANDAAAWQALGwQPDAABG2AREwAODAAODIAADQANGygSGwwTEwAPDYAPKAAACAAESAAATgACVAAAQAAGEwAQCAAESAAATgACVAAAQAAGEwAFDAAASAAADAAQSAAACAAASAAACAKsIAADCAAASAAADAAQUAAACID/GwQPSMAADAABUAAASAAASAAACAAASAAADAAFUgAACAABSAAADAAQUAAACID/GwQPSMAADAABUAAASAAASAAACAABSAAADAAFUgAACAACSAAADAAQUAAACID/GwQPSMAADAABUAAASAAASAAACAACSAAADAAFUgAACAADSAAADAAQUAAACID/GwQPSMAADAABUAAASAAASAAACAADSAAADAAFUgAADAAFSAAACAAASAAACAJ8IAACEwARDAARSAAACAANSAAACALdIAACEwASDAARSAAACAAXSAAACALdIAACEwATDAARDIASGwQQDAATG2AQEwAUDYAUKAAAWAAMSAAAWAANSAAAWAAOSAAAWAAPSAAAWAAQSAAAWAARSAAAWAASSAAAWAATSAAAWAAUSAAAWAAVSAAAWAAWSAAAWAAXSAAAWAAYSAAAWAAZSAAAWAAaSAAAWAAbSAAAWAAcSAAAWAAdSAAAWAAeSAAAWAAfSAAAWAAgSAAAWAAhSAAAWAAiSAAAWAAjSAAAWAAkSAAAWAAlSAAAWAAmSAAAWAAnSAAAWAAoSAAAWAApSAAAWAAqSAAAWAArSAAAeIAsEAAXWAAtSAAAWAAuSAAAWAAvSAAAWAAwSAAAeIAxEAAYCAAESAAATgACVAAAQAAGEwAZCAAkSAAATgACVAAAQAAGEwAaDAABSAAACAAASAAACAJ8IAACSMAASMAACAAASAAADAAZUgAADAABSAAACAAESAAACAJ8IAACSMAASMAACAABSAAADAAZUgAADAABSAAACAAISAAACAJ8IAACSMAASMAACAACSAAADAAZUgAADAABSAAACAAMSAAACAJ8IAACSMAASMAACAADSAAADAAZUgAACAAASAAADAAZUAAACIAASEAADIAYUEgAGwQQSMAASMAACAAASAAADAAaUgAACAABSAAADAAZUAAACIABSEAADIAYUEgAGwQQSMAASMAACAABSAAADAAaUgAACAACSAAADAAZUAAACIACSEAADIAYUEgAGwQQSMAASMAACAACSAAADAAaUgAACAADSAAADAAZUAAACIADSEAADIAYUEgAGwQQSMAASMAACAADSAAADAAaUgAACAAAEAAJDAAJCIAgGwQOMwAGOBG2DAAJCIABGwQASMAADAAaUAAAEAAbDAAJCIACGwQASMAADAAaUAAAEAAcDAAJCIADGwQASMAADAAaUAAAEAAdDAAbDIAcGwQQDAAdG2AQDAAJSAAADAAXUAAAG2AQEwAeDAAeSAAADAACSAAACALvIAACEwAfDAAJSAAADAAaUAAADIAfGwQQSMAASMAADAAJCIAEGwQASMAADAAaUgAADAAJCIAEGwQASMAADAAaUAAASAAASAAADAAJSAAADAAAUgAADAAJCIABGQQAEQAJOBCIKAAADAABTgAyUAAACIAQGwQEEwAVCAAQDIAVGwQBEwAKCAAAEAAhDAAhDIAKGwQOMwAGOBImDAAKSAAADAABTgAzQAAFDAAhCIABGQQAEQAhOBHoCAAASAAACAAQSAAADAABTgA0QAAJEwAiCAAQSAAATgACVAAAQAAGEwAjCAAAEAALDAALCIAQGwQOMwAGOBLSDAALSAAADAAiUAAADIALSEAADIAAUEgAGwQQCAAqG2AQSMAASMAADAALSAAADAAjUgAA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"));
                        var D = function(t) {
                            return __g._encrypt(encodeURIComponent(t))
                        };
                                
                        return {
                            XL: A,
                            ZP: D
                        }
                    }
                    
                aa().ZP("123456")
                """;


        // 创建 Nashorn 引擎工厂
        NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
        String[] options = new String[] {
                "--language=es6", // 设置支持 ES6 语法
                "--no-java", // 禁用 Java 暴露到 JavaScript 中
                "--optimistic-types=true", // 开启类型推断优化
        };

        // 创建 Nashorn 引擎
        ScriptEngine engine = factory.getScriptEngine(options);

        code = "alert(111)";

        // 执行 JavaScript 代码
        Object result = engine.eval(code);
        System.out.println(result);
    }

}
